Data processing systems frequently include large scale storage devices, such as Direct Access Storage Devices (DASD), located externally to the host computer and sometimes at significant distances therefrom. Communication from the host computer to the DASD is accomplished over signal cables, called channels, extending between the DASD and its control unit and connecting them to the host processor.
Current technology provides DASD units with several separate disks, all rotating on the same spindle. These disks, or platters, are accessed by head disk assemblies with a transducing head providing access to one surface of each disk. There may be, for example, nine platters in a disk drive providing 16 usable surfaces with one of the usable surfaces used for maintaining accurate tracking capability. In such units, there are 15 usable surfaces for data and when all the heads are positioned, a cylinder of 15 physical, recording tracks can be accessed.
DASD units frequently use a Count Key Data architecture (CKD) where records written on the track are provided with a count field (an ID), a key field and a data field.
In writing these fields along a recording track, a gap is provided between each of the fields. Those gaps are then utilized to provide a time period in which the DASD control unit and the host channel can communicate with each other. It is during the gap time that the control unit provides information back to the channel in response to the command that it has received and gets the next command in order to begin the next operation for searching, retrieving or writing records. This process is termed gap synchronous, that is to say, that the particular record on which the DASD device is working, is the same record on which the channel has requested work, so that both the channel and the device are synchronous with each other in the sense that they are both working on the same record, either to read it or to write it.
As systems become faster and faster, the delays created by the gaps or by the performance of functions within a gap period have to be shrunk to such an extent that the functions can no longer be adequately performed. This is particularly true of optical fiber channels where the data burst rate is several times the burst rate for copper channels.
With the instant invention, nonsynchronous storage subsystems are developed to enable the channel and the device to transfer data independently of each other. To do that, a buffer has been inserted into the data path between the device and the channel with separate data paths for the channel and the device, each under the control of separate processors. In that manner, the device processor can access records in one portion of the buffer while another portion of the buffer is being used by the channel processor. Channel programs can be executed such that the channel and storage control activities required to end execution of one command and advance to the next do not have to occur during the inter-record gap between two adjacent fields.
In a synchronous system, the device and channel operate on the same record so that the data transferred to the buffer by the device is the same data that the channel wants. In the control unit for such a system, shared variables are all that are required to implement the interface between the channel processor and the device processor. Simple shared variables are adequate because the channel processor and device processor are always performing the same operation on the same field. In a nonsynchronous system, however, the device may operate significantly ahead of the channel during read operations. The device processor is transferring data into the buffer from the device while the channel processor is accessing that data in order to send it on to the channel. The device processor is therefore the filling or leading activity, while the channel processor is the trailing or lagging activity. The reverse is true during write operations where the channel processor fills the buffer with data from the channel and, subsequently, the device processor accesses that data to send it to the device for writing the records on the storage disks. In this instance, the channel processor is the leading, or filling activity while the device processor is the trailing, or emptying activity. Since in a nonsynchronous control unit the channel and the device processors can be performing different operations on different fields, a more elaborate communication system between the two is required.
An object of this invention is to allow the channel and device processors to operate concurrently on different fields as well as operate concurrently on the same field.
Another object is to improve performance by keeping a series of controls for the record physically with the record in the buffer.
Still another object is to prevent the trailing process from catching up and overrunning the leading process.
Another object is to enable the leading process to transfer multiple records to the buffer by wrapping around to the beginning of the buffer without catching up to and overrunning the trailing processor.